/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.unipar.oficina.controle.cadastros;

import br.com.unipar.oficina.modelo.cadastros.Cidade;
import br.com.unipar.oficina.modelo.cadastros.Estado;
import br.com.unipar.oficina.modelo.cadastros.Unidade;
import br.com.unipar.oficina.service.cadastros.CidadeService;
import br.com.unipar.oficina.service.cadastros.UnidadeService;
import java.io.IOException;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;
import javax.inject.Named;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author Thiago Marques
 */
@Controller
@Scope("request")
@Named("unidadeBean")
public class UnidadeBean {

    private final UnidadeService unidadeService;
    private final CidadeService cidadeService;
    private Unidade unidade = new Unidade();
    private List<Unidade> unidades;
    private String nomeConsulta;
    private String cnpjConsulta;
    private Estado estado;
    private List<Estado> estados;
    private List<Cidade> cidades;

    @Autowired
    public UnidadeBean(UnidadeService unidadeService, CidadeService cidadeService) {
        this.cidadeService = cidadeService;
        this.unidadeService = unidadeService;
    }

    @PostConstruct
    public void init() {
        estados = cidadeService.getEstados();
    }

    public void listaCidades(AjaxBehaviorEvent event) {
        cidades = cidadeService.getCidades(estado);
    }

    public String novo() {
        unidade = new Unidade();
        return "/gestao/unidadeForm.jsf";
    }

    public void salvar(ActionEvent event) {
        try {
            unidadeService.salvar(unidade);
            FacesContext.getCurrentInstance().getExternalContext().redirect("unidadeLista.jsf");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public String editar() {
        estado = unidade.getCidade().getEstado();
        listaCidades(null);
        return "/gestao/unidadeForm.jsf";
    }

    public void consultar(ActionEvent event) {
        unidades = unidadeService.consultar(nomeConsulta, cnpjConsulta);
    }

    public void excluir() {
        unidadeService.excluir(unidade);
        unidades.remove(unidade);
    }

    public String getCnpjConsulta() {
        return cnpjConsulta;
    }

    public void setCnpjConsulta(String cnpjConsulta) {
        this.cnpjConsulta = cnpjConsulta;
    }

    public Unidade getUnidade() {
        return unidade;
    }

    public void setUnidade(Unidade unidade) {
        this.unidade = unidade;
    }

    public List<Unidade> getUnidades() {
        return unidades;
    }

    public void setUnidades(List<Unidade> unidades) {
        this.unidades = unidades;
    }

    public List<Cidade> getCidades() {
        return cidades;
    }

    public void setCidades(List<Cidade> cidades) {
        this.cidades = cidades;
    }

    public Estado getEstado() {
        return estado;
    }

    public void setEstado(Estado estado) {
        this.estado = estado;
    }

    public List<Estado> getEstados() {
        return estados;
    }

    public void setEstados(List<Estado> estados) {
        this.estados = estados;
    }

    public String getNomeConsulta() {
        return nomeConsulta;
    }

    public void setNomeConsulta(String nomeConsulta) {
        this.nomeConsulta = nomeConsulta;
    }
}
